/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.celularessuc.gco.neg;

import com.jjsoft.celularessuc.gco.dao.GenericController;
import com.jjsoft.celularessuc.gco.mdl.Articulo;
import com.jjsoft.celularessuc.gco.mdl.Articulosucursal;
import com.jjsoft.celularessuc.gco.mdl.Detallefactura;
import com.jjsoft.celularessuc.gco.mdl.Sucursal;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Johnny
 */
public class ArticuloSucursalManager {

    GenericController<Articulosucursal> controladorAS = new GenericController<Articulosucursal>();

    public void guardarArticulo(Articulosucursal articulosucursal) {
        controladorAS.create(articulosucursal);
    }

    public void modificarArticulo(Articulo articulo, Sucursal sucursal) {
        try {
            Articulosucursal articulosuc = controladorAS.findWhere(new Articulosucursal(), "idArticulo=" + articulo.getCodigo() + " and idSucursal=" + sucursal.getIdsucursal()).get(0);
            
            articulosuc.setStock(articulo.getStock());
            controladorAS.edit(articulosuc);
        } catch (Exception ex) {
            Articulosucursal articulosuc = new Articulosucursal();
            articulosuc.setIdArticulo(articulo.getCodigo());
            articulosuc.setIdSucursal(sucursal.getIdsucursal());
            articulosuc.setStock(articulo.getStock());
            controladorAS.create(articulosuc);
        }
    }
    public void ReducirStock(Articulo articulo, Sucursal sucursal,int stock) {
        try {
            Articulosucursal articulosuc = controladorAS.findWhere(new Articulosucursal(), "idArticulo=" + articulo.getCodigo() + " and idSucursal=" + sucursal.getIdsucursal()).get(0);
            articulosuc.setStock(articulosuc.getStock()-stock);
            controladorAS.edit(articulosuc);
        } catch (Exception ex) {
            
        }
    }
    public void AumentarStock(Articulo articulo, Sucursal sucursal,int stock) {
        try {
            Articulosucursal articulosuc = controladorAS.findWhere(new Articulosucursal(), "idArticulo=" + articulo.getCodigo() + " and idSucursal=" + sucursal.getIdsucursal()).get(0);
            articulosuc.setStock(articulosuc.getStock()+stock);
            controladorAS.edit(articulosuc);
        } catch (Exception ex) {
            Articulosucursal articulosuc = new Articulosucursal();
            articulosuc.setIdArticulo(articulo.getCodigo());
            articulosuc.setIdSucursal(sucursal.getIdsucursal());
            articulosuc.setStock(stock);
            controladorAS.create(articulosuc);
        }
    }

    public Integer verStock(Articulo articulo, Sucursal sucursal) {
        try {
            int stock = controladorAS.findWhere(new Articulosucursal(), "idArticulo=" + articulo.getCodigo() + " and idSucursal=" + sucursal.getIdsucursal()).get(0).getStock();
            return stock;
        } catch (Exception ex) {
            return 0;
        }
    }
    public List<Articulosucursal> buscarEnSucursales(String criterio){
        List<Articulosucursal> listaArticulosSucursales=new ArrayList();
        List<Articulo> listaArticulos = new ArticuloManager().listarArticulos(criterio);
        for(int i=0;i<listaArticulos.size();i++)
        {
            listaArticulosSucursales.addAll(controladorAS.findWhere(new Articulosucursal(), "idArticulo="+listaArticulos.get(i).getCodigo()));
        }
        return listaArticulosSucursales;
    }
    public void transferirArticulos(Sucursal origen, Sucursal destino, List<Detallefactura> listaDetalle)
    {
        SerieManager sm= new SerieManager();
        for(int i=0;i<listaDetalle.size();i++)
        {
            ReducirStock(listaDetalle.get(i).getIdArticulo(), origen, listaDetalle.get(i).getCantidad());
            AumentarStock(listaDetalle.get(i).getIdArticulo(), destino, listaDetalle.get(i).getCantidad());
            if(!listaDetalle.get(i).getSerie().equals(""))
            {
                sm.CambiaSerie(listaDetalle.get(i).getIdArticulo(), origen, destino, listaDetalle.get(i).getSerie());
            }
        }
    }
}
